//=============================================================================
//                                                                            
//                               OpenMesh                                     
//      Copyright (C) 2001-2005 by Computer Graphics Group, RWTH Aachen       
//                           www.openmesh.org                                 
//                                                                            
//-----------------------------------------------------------------------------
//                                                                            
//                                License                                     
//                                                                            
//   This library is free software; you can redistribute it and/or modify it 
//   under the terms of the GNU Library General Public License as published  
//   by the Free Software Foundation, version 2.                             
//                                                                             
//   This library is distributed in the hope that it will be useful, but       
//   WITHOUT ANY WARRANTY; without even the implied warranty of                
//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU         
//   Library General Public License for more details.                          
//                                                                            
//   You should have received a copy of the GNU Library General Public         
//   License along with this library; if not, write to the Free Software       
//   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.                 
//                                                                            
//-----------------------------------------------------------------------------
//                                                                            
//   $Revision: 1.2 $
//   $Date: 2005-12-21 13:48:38 $
//                                                                            
//=============================================================================


//=============================================================================
//
//  Helper Functions for binary reading / writing
//
//=============================================================================

#ifndef OPENMESH_SR_TYPES_HH
#define OPENMESH_SR_TYPES_HH


//== INCLUDES =================================================================

#include <Core/System/config.hh>


//== NAMESPACES ===============================================================

namespace OpenMesh {
	namespace IO {


		//=============================================================================


		/** \name Handling binary input/output.
		These functions take care of swapping bytes to get the right Endian.
		*/
		//@{

		//-----------------------------------------------------------------------------

		typedef unsigned char    uchar;
		typedef unsigned short   ushort;
		typedef unsigned int     uint;
		typedef unsigned long    ulong;

		typedef char           int8_t;  typedef unsigned char      uint8_t;
		typedef short          int16_t; typedef unsigned short     uint16_t;
		typedef long           int32_t; typedef unsigned long      uint32_t;
#if defined(OM_CC_MSVC)
		typedef __int64        int64_t; typedef unsigned __int64   uint64_t;
#else
		typedef long long      int64_t; typedef unsigned long long uint64_t;
#endif

		typedef float          float32_t;
		typedef double         float64_t;

		typedef uint8_t        rgb_t[3];
		typedef uint8_t        rgba_t[4];

		//@}


		//=============================================================================
	} // namespace IO
} // namespace OpenMesh
//=============================================================================
#endif // OPENMESH_MESHREADER_HH defined
//=============================================================================

